home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS077A.dsk
/
MUSIC COMPUTER.int
< prev
next >
Wrap
Text File
|
2012-02-16
|
6KB
|
142 lines
0 CALL -936
1 SPEED=100
5 GOSUB 32000
10 GOTO 42
25 P=S(Z): POKE 0,P: POKE 1,D:CALL 2
26 COLOR= RND (C1):X1= RND (20):Y1= RND (20):Z1= RND (40):R1= RND (2)
27 R2= RND (2)
28 IF R1=1 THEN 34
30 IF X1+Y1<20 AND R2=0 THEN HLIN X1,Y1+X1 AT Z1
31 IF X1+Y1<20 AND R2=1 THEN HLIN X1+20,Y1+X1+20 AT Z1
32 IF X1+Y1>19 THEN HLIN X1,Y1+20 AT Z1
33 RETURN
34 IF X1+Y1<20 AND R2=0 THEN VLIN X1,Y1+X1 AT Z1
35 IF X1+Y1<20 AND R2=1 THEN VLIN X1+20,Y1+X1+20 AT Z1
36 IF X1+Y1>19 THEN VLIN X1,Y1+20 AT Z1
37 RETURN
42 DIM S(28):DIM A(10):SUM=0
80 PRINT " *** COMPUTER MUSIC ***"
81 PRINT
82 PRINT "YOU MUST HELP THE COMPUTER COMPOSE":PRINT "ITS (AHEM) GREAT PIECE OF MUSIC."
84 PRINT :PRINT "THE COMPUTER WILL CONTROL THE TEMPO,":PRINT "BUT YOU MUST HELP THE COMPUTER":PRINT "CHOOSE THE PITCHES AND RHYTHM."
88 PRINT :PRINT " YOU MUST SELECT THE RELATIVE":PRINT "WEIGHT THAT A CERTAIN INTERVAL":PRINT "WILL HAVE. FOR EXAMPLE,"
90 PRINT "IF YOU WANT OCTAVE LEAPS TO OCCUR":PRINT "MORE FREQUENTLY THAN SKIPS OF":PRINT "A PERFECT FIFTH, TYPE IN A LARGER"
92 PRINT "NUMBER FOR OCTAVES.":PRINT :PRINT "OKAY NOW, TELL ME THE RELATIVE":PRINT "WEIGHTS OF THE FOLLOWING:"
94 PRINT
96 PRINT "MAJOR SECOND ";:INPUT A(0):PRINT "MAJOR THIRD ";:INPUT A(1):PRINT "PERFECT FOURTH ";:INPUT A(2)
98 PRINT "PERFECT FIFTH ";:INPUT A(3):PRINT "MAJOR SIXTH ";:INPUT A(4):PRINT "MAJOR SEVENTH ";:INPUT A(5)
100 PRINT "OCTAVE ";:INPUT A(6)
110 SUM=SUM+A(6)+A(5)
115 PRINT
120 PRINT " NOW CHOOSE HOW LONG YOU WANT":PRINT "THIS MUSIC TO LAST. WHAT YOU":PRINT "MUST DO IS TYPE IN A NUMBER FROM"
125 PRINT "1 TO 2000. THE LARGER THE NUMBER":PRINT "THE LONGER THE MUSIC GOES ON!";:INPUT H
135 IF H>0 AND H<2001 THEN 150
140 PRINT "PLEASE TYPE A NUMBER BETWEEN 1 AND":PRINT "2000";:GOTO 125
150 PRINT
160 PRINT "NOW TELL ME THE RELATIVE FREQUENCY":PRINT "OF THE FOLLOWING NOTE VALUES."
162 PRINT
165 PRINT "WHOLE NOTES ";:INPUT C:PRINT "HALF NOTES ";:INPUT V:PRINT "QUARTER NOTES ";:INPUT G
170 PRINT "1 EIGHTH NOTE ";:INPUT J:PRINT "2 EIGHTH NOTES ";:INPUT K:PRINT "2 SIXTEENTH NOTES ";:INPUT L
172 PRINT "4 SIXTEENTH NOTES ";:INPUT Q:PRINT "8 SIXTEENTH NOTES ";:INPUT U
175 MSUM=C+V+G+J+K+L+Q+U
180 V=C+V:G=V+G:J=G+J:K=J+K:L=K+L:Q=Q+L:U=U+Q
182 PRINT
183 PRINT "HOW MANY COLORS DO YOU WANT":PRINT "FOR THE VISUAL DISPLAY (1 TO 16)";:INPUT C1
184 IF C1<1 OR C1>16 THEN GOTO 188:GOTO 200
188 PRINT "PLEASE TYPE IN A NUMBER FROM":PRINT "1 THROUGH 16.":GOTO 183
200 PRINT
205 PRINT "YOU ALSO CONTROL HOW OFTEN THE":PRINT "PITCHES CHANGE, AND IN WHICH ":PRINT "DIRECTION THEY MOVE."
210 PRINT "WITH WHAT FREQUENCIES DO YOU WISH":PRINT "THE FOLLOWING:":PRINT
215 PRINT "UPWARD MOVEMENT ";:INPUT X5
220 PRINT "DOWNWARD MOVEMENT ";:INPUT X6
225 PRINT "SAME PITCH ";:INPUT X7
230 PRINT :SUM0=X5+X6+X7:X6=X6+X5
250 GR
300 S(0)=238:S(1)=213:S(2)=202:S(3)=180:S(4)=158:S(5)=148:S(6)=132:S(7)=118:S(8)=106
310 S(9)=100:S(10)=89:S(11)=78:S(12)=73:S(13)=65:S(14)=58:S(15)=52:S(16)=49:S(17)=44
320 S(18)=39:S(19)=36:S(20)=32:S(21)=28:S(22)=25:S(23)=24:S(24)=21:S(25)=19:S(26)=18:S(27)=16
350 FOR M=0 TO H
400 X= RND (SUM0+1)
405 IF X<X5 THEN 500:IF X<X6 THEN 600:GOTO 700
500 Y= RND (SUM+1)
510 IF Y>A(0) THEN 520:Z=Z+1:IF Z>27 THEN Z=Z-2:GOTO 700
520 IF Y>A(1) THEN 530:Z=Z+2:IF Z>27 THEN Z=Z-4:GOTO 700
530 IF Y>A(2) THEN 540:Z=Z+3:IF Z>27 THEN Z=Z-6:GOTO 700
540 IF Y>A(3) THEN 550:Z=Z+4:IF Z>27 THEN Z=Z-8:GOTO 700
550 IF Y>A(4) THEN 560:Z=Z+5:IF Z>27 THEN Z=Z-10:GOTO 700
560 IF Y>A(5) THEN 570:Z=Z+6:IF Z>27 THEN Z=Z-12:GOTO 700
570 Z=Z+7:IF Z>27 THEN Z=Z-14:GOTO 700
600 Y= RND (SUM+1)
610 IF Y>A(0) THEN 620:Z=Z-1:IF Z<0 THEN Z=Z+2:GOTO 700
620 IF Y>A(1) THEN 630:Z=Z-2:IF Z<0 THEN Z=Z+4:GOTO 700
630 IF Y>A(2) THEN 640:Z=Z-3:IF Z<0 THEN Z=Z+6:GOTO 700
640 IF Y>A(3) THEN 650:Z=Z-4:IF Z<0 THEN Z=Z+8:GOTO 700
650 IF Y>A(4) THEN 660:Z=Z-5:IF Z<0 THEN Z=Z+10:GOTO 700
660 IF Y>A(5) THEN 670:Z=Z-6:IF Z<0 THEN Z=Z+12:GOTO 700
670 Z=Z-7:IF Z<0 THEN Z=Z+14:GOTO 700
700 X= RND (MSUM+1):P=S(Z):X2= RND (2)
710 IF X>C THEN 730:D=254:GOSUB 25
720 GOSUB 25
725 GOTO 1000
730 IF X>V THEN 740:D=254:GOSUB 25
735 GOTO 1000
740 IF X>G THEN 750:D=126:GOSUB 25
745 GOTO 1000
750 IF X>J THEN 760:D=63:GOSUB 25
755 GOTO 1000
760 IF X>K THEN 790:D=50:GOSUB 25
770 FOR W=0 TO 13:NEXT W
775 IF X2=0 AND Z<27 THEN Z=Z+1:IF X2=1 AND Z>0 THEN Z=Z-1:P=S(Z)
780 GOSUB 25
785 GOTO 1000
790 IF X>L THEN 820:D=25:GOSUB 25
800 FOR W=0 TO 5:NEXT W
805 IF X2=0 AND Z<27 THEN Z=Z+1:IF X2=1 AND Z>0 THEN Z=Z-1:P=S(Z)
810 GOSUB 25
815 GOTO 1000
820 IF X>Q THEN 870:D=25
830 FOR E=0 TO 3
840 GOSUB 25
845 IF E=3 THEN GOTO 1000
850 FOR W=0 TO 5:NEXT W
855 IF X2=0 AND Z<26 THEN Z=Z+2:IF X2=1 AND Z>1 THEN Z=Z-2:P=S(Z)
860 NEXT E
865 GOTO 1000
870 D=25
880 FOR E=0 TO 7
890 GOSUB 25
895 IF E=7 THEN GOTO 1000
900 FOR W=0 TO 5:NEXT W
905 IF X2=0 AND Z<25 THEN Z=Z+3:IF X2=1 AND Z>2 THEN Z=Z-3:P=S(Z)
910 NEXT E
915 GOTO 1000
1000 NEXT M
1005 GOSUB 2000
1010 PRINT :PRINT
1020 PRINT "WOULD YOU LIKE TO TRY IT AGAIN":PRINT "TYPE 0 FOR NO, 1 FOR YES";:INPUT T
1030 IF T=0 THEN 32010
1032 TEXT
1035 GOTO 81
2000 REM *** FINAL CADENCE SUBROUTINE *
2010 D1= RND (2)
2020 IF Z<13 THEN Z=10
2030 IF Z>12 THEN Z=17
2035 D=254:GOSUB 25
2036 GOSUB 25
2040 D=254:Z=Z+1:GOSUB 25
2045 GOSUB 25
2050 Z=Z+1:GOSUB 25
2055 GOSUB 25
2060 Z=Z+1:GOSUB 25
2065 GOSUB 25
2066 GOSUB 25
2070 IF D1=0 THEN Z=Z+3:IF D1=1 THEN Z=Z-4:GOSUB 25
2080 GOSUB 25
2090 GOSUB 25
2095 GOSUB 25
2100 RETURN
3030 IF X1+Y1<20 AND R2=0 THEN HLIN X1,Y1+X1 AT Z1
32000 POKE 2,173: POKE 3,48: POKE 4,192: POKE 5,136: POKE 6,208: POKE 7,4: POKE 8,198: POKE 9,1: POKE 10,240
32005 POKE 11,8: POKE 12,202: POKE 13,208: POKE 14,246: POKE 15,166: POKE 16,0: POKE 17,76: POKE 18,2: POKE 19,0: POKE 20,96:RETURN
32010 END